package suray.rgv.communication.data.status;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 查询机器人任务状态
 */
@NoArgsConstructor
@Data
public class RobotTaskStatus {

    @JsonProperty("ret_code")
    private Integer retCode;
    @JsonProperty("task_status_package")
    private TaskStatusPackageDTO task_status_package;

    @NoArgsConstructor
    @Data
    public static class TaskStatusPackageDTO {
        @JsonProperty("closest_target")
        private String closest_target;//一定直线距离内（该距离是rbk内的一个参数），离机器人最近的站点。可能为空串，表示机器人周围没有站点
        @JsonProperty("distance")
        private Double distance;//	机器人 到 “当前正执行的导航任务所对应的路径” 的投影距离
        @JsonProperty("info")
        private String info;//机器人在导航过程中，对使用者的一些提示，可以将其输出到前台。该字段不参与实际的逻辑判断
        @JsonProperty("percentage")
        private Double percentage;//	机器人当前正执行的导航任务中，对于相应的路径，机器人已经走完的部分，占整条路径的比例
        @JsonProperty("source_name")
        private String source_name;//机器人当前正执行的导航任务中的 "source_id"
        @JsonProperty("target_name")
        private String target_name;//机器人当前正执行的导航任务中的 "id"
        @JsonProperty("create_on")
        private String create_on;//API 上传时间戳
        @JsonProperty("err_msg")
        private String err_msg;//错误信息
        @JsonProperty("task_status_list")
        private List<TaskStatusListDTO> task_status_list;//任务状态列表（字段说明详见下表）

        @NoArgsConstructor
        @Data
        public static class TaskStatusListDTO {
            @JsonProperty("status")
            private Integer status;
            @JsonProperty("task_id")
            private String task_id;
            @JsonProperty("type")
            private Integer type;
        }
    }
}
